﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ParametresTableaux_params
{
    /// <summary>
    /// Description complète de la classe. Généralement on donne la fonction de cette classe ainsi que ces particularités
    /// Possede une méthode <c>Afficher</c> : un tableau de paramètres.
    /// </summary>
    /// <remarks>
    ///N'importe quel nombre de paramètre (zéro inclus) peut apparaître dans l'invocation,
    ///tant qu'ils sont tous compatibles avec le type du tableau de paramètres
    /// </remarks>
    /// 
    class Program
    {
        static void Main(string[] args)
        {
            Program p = new Program(); // ou rendre Afficher comme static
            p.Afficher("Aucun params");
            p.Afficher("Hello",1,2); //n'importe quel nombre de paramètre (zéro inclus) peut apparaître dans l'invocation,
            //tant qu'ils sont tous compatibles avec le type du tableau de paramètres

            //Une autre option est de passer un seul tableau, et dans ce cas le paramètre se comporte comme un paramètre par valeur normal.
            int[] ta = new int[] { -3, 4, 5 }; 
            p.Afficher("Bonjour",ta);

            Console.ReadKey();
        }
        
        /// <summary>
        /// Un tableau de paramètres doit se trouver à la fin de la liste des paramètres, et doit être un tableau à une dimension. avec <paramref name="s" /> et<paramref name="tab"/>
        /// </summary>
        /// <param name="s">parametre qui affiche un titre par exemple</param>
        /// <param name="tab">parametre un tableau d'entier</param>
        /// <returns>Pas de retour: void .</returns>
        /// <exception cref="ExecutionEngineException">Exception déclenchée quand le programme plante ;-) </exception>
        /// <example>Voila un exemple d'utilisation de la méthode
        /// <code>
        ///    int[] ta = new int[] { -3, 4, 5 }; 
        ///    p.Afficher("Bonjour",ta);        /// 
        /// </code>
        /// </example>
        void Afficher(string s, params int[] tab)
            //Un tableau de paramètres doit se trouver à la fin de la liste des paramètres, et doit être un tableau à une dimension.
        {
            
            Console.WriteLine(s);
            foreach (int i in tab) Console.WriteLine(i);
        }

    }
}
